#include <iostream>
#include <csignal>
#include <unistd.h>

using namespace std;

// 信号处理函数
void signal_handle (int signum) {

  cout << "整数信号：Interrupt signal (" << signum << ") received.\n";
  // 清理并关闭
  // 终止程序
  exit(signum);
}

int	main(int argc, char **argv)
{

  int i = 0;
  // 注册信号 SIGINT 和信号处理程序
  // NOTE: 按 Ctrl+C 来中断程序, 会看到程序捕获信号
  signal(SIGINT, signal_handle);

  // 死循环
  while(++i){
    cout << "Going to sleep...." << endl;
    if (i > 5)
    {
      // NOTE: 触发信号
      raise(SIGINT);
    }
    sleep(1); // 来自 unistd.h 头文件
  }

  return 0;
}
